
#include "iostream"
#include "vector"
#include "unordered_map"
#include "unordered_set"
#include "algorithm"
#include "string"
#include "list"
#include "string.h"

struct BigInt{
    std::string str;
    void minus_1(){
        int jiewei=1;
        for(int i=str.size()-1;i>=0;i--){
            if(jiewei){
                if(str[i]=='0'){
                    str[i]='9';
                }else{
                    str[i]--;
                    jiewei=0;
                }
            }else{
                break;
            }
        }
        if(str[0]=='0'){
            str=str.substr(1,str.size()-1);
        }
    }
};

class OneLoop{
public:
    int cnt_of_1_2_in_n(BigInt &n){
        int cnt=0;
        for(auto c:n.str){
            if(c=='1'||c=='2'){
                cnt++;
            }
        }
        return cnt;
    }
    void run(
            std::string &a
            ){
        BigInt bi;
        bi.str=a;
        int cnt=0;
        while(bi.str.size()){
            cnt+= cnt_of_1_2_in_n(bi);
            cnt%=20123;
            bi.minus_1();
        }
        printf("%d\n",cnt);
    }
};
class Solution {
public:
    void run() {

        bool first = true;
        int a,b,c,d,e;
        std::string s1,s2;
        while (
//                std::cin>>a1
1
)
        {
            char a=std::cin.get();
            if(a==EOF||a=='\n'){
                break;
            }else if(a>='0'&&a<='9'){
                s1+=a;
            }
//            std::getline(std::cin,s2);
        }

        OneLoop loop;
        loop.run(s1);
    }
};

int main() {
//    bool cur_num= true;
    Solution().run();
    return 0;
}

